<?php
namespace app\admin\controller;

use think\Controller;
use think\Exception;
use think\Log;
use think\Db;
use think\Request;

class Base extends  Controller
{
    public function __construct()
    {
        parent::__construct();
        if(!session("admin")){
            $this->redirect('Login/index');
        }else{
            $group_id=session("admin")["group_id"];
            $data=Db::table("think_auth_rule")->where("FIND_IN_SET(id,(SELECT rules from think_auth_group WHERE id=$group_id ))")->select();
            $menu_data=$this->menu_list($data);

            $this->assign("menu_data",$menu_data);
            $this->assign("admin",session("admin"));
            $id=session("admin")["id"];
            $request=Request::instance();
            $model=$request->module();
            $controller=$request->controller();
            $action=$request->action();
            $href=$model."/".$controller."/".$action;
            if($controller!="Index"){
                $auth=new \think\Auth();
                $res=$auth->check($href,$id);
                if(!$res){
                    if($this->request->isAjax()||$this->request->isPost()){
                        $this->redirect('Index/ajaxPermission');
                    }else{
                        $this->redirect('Index/Permission');
                    }
                }
            }
        }
    }

    /**
     * 左侧菜单列表
     * @author wcy
     * @version 2017年4月18日09:47:26
     */
    public function menu_list($data){
        try{
            $menu_data=null;
            foreach($data as $key=>$value){
                if($value["pid"]==0){
                    $menu_data[$value["id"]]=$value;
                }
                if($value["pid"]!=0&&$value["ppid"]==0){
                    $menu_data[$value["pid"]]["data"][]=$value;
                }
            }
            return $menu_data;
        }catch (Exception $e){
            Log::record($e->getMessage());
        }
    }
    /**
     * 解析dataTables数据
     * @author wcy
     * @version 2017年4月18日09:48:24
     */
    public function deDataTablesJson()
    {
        try {
            $d=$_POST["data"];
            foreach($d as $key=>$value){
                $data[$value["name"]]=$value["value"];
            }
            return $data;
        } catch (Exception $e) {
            Log::record($e->getMessage());
            return false;
        }
    }

    /**
     * 上传图片(单图)
     * @author wcy
     * @version 2017年5月2日09:40:23
     */
    public function upload($filename){
        // 获取表单上传文件 例如上传了001.jpg
        $file = request()->file('image');
        if(!empty($file)){
            // 移动到框架应用根目录/public/uploads/ 目录下
            $info = $file->move(ROOT_PATH . 'public' . DS . $filename);
            if($info){
                $name=$info->getSaveName();
                return "http://localhost:8080/w_shop/public/$filename/".$name;
            }else{
                // 上传失败获取错误信息
                Log::record($info->getError());
                return "";
            }
        }else{
            return "";
        }
    }
    /**
     * 上传图片(多图)
     * @author wcy
     * @version 2017年5月2日09:40:23
     */
    public function uploads(){
       // 获取表单上传文件 例如上传了001.jpg
       $file = request()->file('file');
           if(!empty($file)){
           // 移动到框架应用根目录/public/uploads/ 目录下
           $info = $file->move(ROOT_PATH . 'public' . DS . "goods/uploads");
           if($info){
               $name=$info->getSaveName();
               $img="http://localhost:8080/w_shop/public/goods/uploads/".$name;
               return json(["code"=>1,"msg"=>$img]);
           }else{
               // 上传失败获取错误信息
               Log::record($info->getError());
               return json(["code"=>-1,"msg"=>"上传失败"]);
           }
       }else{
           return "";
       }
   }
    /**
     * JSON返回数据
     * @author wcy
     * @version 2017年6月23日14:12:50
     */
    public function ajaxReturnJson($code,$msg){
//        return json(["code"=>-1,"msg"=>"添加失败"]);
        return json(["code"=>$code,"msg"=>$msg]);
    }

}
